﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace BlackEagleLibrary
{
    /// <summary>
    /// Denna klass består av metoder som används på flera sidor och har därför brytits ut.
    /// </summary>
    public class CustomMethods
    {
        /// <summary>
        /// Räknar ut ålder utifrån ett datum (DateTime)
        /// </summary>
        /// <param name="birthday"></param>
        /// <returns>int (ålder)</returns>
        public static string CalculateAge(DateTime birthday)
        {
            DateTime now = DateTime.Today;
            int age = now.Year - birthday.Year;
            if (now < birthday.AddYears(age)) age--;

            return age.ToString();
        }

        /// <summary>
        /// Bestämmer kön utifrån en int (0 == kvinna, 1 == man) och returnerar en sträng
        /// </summary>
        /// <param name="s"></param>
        /// <returns>string (kön)</returns>
        public static string GetSex(int s)
        {
            string sex = "";
            if (s == 1)
            {
                sex = "Male";
            }
            else
            {
                sex = "Female";
            }
            return sex;
        }

        /// <summary>
        /// Kontruerar en länk till en användare med id parameter:id
        /// </summary>
        /// <param name="ID"></param>
        /// <returns>string (länk till profil)</returns>
        public static string ProfileUrl(string ID)
        {
            string id = "Profile.aspx?" + ID.ToString();
            return id;
        }

        /// <summary>
        /// Om en användares profilbild inte kan laddas in (url inte giltig osv) så laddas en alternativ bild in, beroende på vilket kön användaren har deklarerat så visas en man- eller kvinnosiluett.
        /// </summary>
        /// <param name="sex"></param>
        /// <returns>string (url till bild)</returns>
        public static string GetSexImage(int sex)
        {
            string pic = "";
            if (sex == 1)
            {
                pic = "img/male_silhouette.png";
            }
            else
            {
                pic = "img/female_silhouette.png";
            }
            return pic;
        }

        
        /// <summary>
        /// Kontrollerar en användares profilbilds URL, är det inte giltig så kallas GetSexImage som returnerar en alternativ bild.
        /// </summary>
        /// <param name="url"></param>
        /// <param name="sex"></param>
        /// <returns></returns>
        public static string CheckImg(string url, int sex)
        {
            try
            {
                //Bilden försöks nås genom bildens URL som kommer in som en parameter
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "HEAD";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                //Om response returnerar en OK HttpStatusCode så är bildens URL giltig
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    return url;
                }

                else
                {
                    //Kommer inte webRequest åt bilden så hämtas en alternativ bild
                   return GetSexImage(sex);
                }
            }
            catch (Exception)
            {
                //Är URL en icke giltig http sträng så fångas detta här och metoden för att generera en alternativ bild kallas.
                return GetSexImage(sex);
            }
        }
    }
}
